package com.kinglone.common.filter;

import com.kinglone.back.user.model.User;
import com.kinglone.back.user.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//定义登录拦截器
public class LoginFilter extends HandlerInterceptorAdapter{

	@Autowired
	private UserService userService;

	/**
	 * 1、判断是否有用户信息，如果有则通过，如果没有则跳转到登录页面
	 * 2、如果session中没有用户信息，但用户点击了保存一周后cookie中存有用户信息也放行
	 * 3、判断用户是否激活，如果激活就放行
	 */
	public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {
				
		//判断用户是否有登录
		User user = (User) request.getSession().getAttribute("user");

		//session中的用户信息为空，还要继续判断cookie是否有用户的信息，如果有
		/*if(user==null){
			//获取cookie信息
			Cookie cookie = CookieUtils.getCookie(request, "userInfo");
			if(cookie!=null){
			    //获取用户的账号
				String userId = cookie.getValue();
				//根据用户的账号调用业务层获取用户的信息，再将用户的信息存放在session中，同时请求放行
				user = userService.getUserById(userId);
				request.getSession().setAttribute("user", user);
			}
		}	*/		
		
		//判断用户
		if(user == null){
			request.setAttribute("message", "您尚未登录或账户已被冻结，请核实！");
			//如果为空，跳转到登录页面，返回false
			request.getRequestDispatcher("/login.jsp").forward(request, response);
			return false;
		}else{
			//如果不为空，返回true,
			return true;
		}	
	}

	
}
